package com.test.udp.talk;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * UDP协议发送方(实现多次交流)
 * 1.使用DatagramSocket 指定端口,创建接收端
 * 2.准备容器 封装成DatagramPacket包裹
 * 3.阻塞式接收包裹receive(DatagramPacket p)
 * 4.分析数据
 * byte[] getByte()
 * getLength()
 * 5.释放资源
 *
 * @author: ybl
 * @create: 2019-05-27 22:38
 **/
public class UDPTalkServer {

    public static void main(String[] args) throws Exception {
        System.out.println("接收方启动中...");

        //循环不停接收
        while (true) {
            // 1.使用DatagramSocket 指定端口,创建接收端
            DatagramSocket server = new DatagramSocket(9999);

            //2.准备容器 封装成DatagramPacket包裹,创建一个字节数组对象,长度为UDP的最大长度1024*60
            byte[] data = new byte[1024 * 60];
            DatagramPacket packet = new DatagramPacket(data, 0, data.length);
            //3.阻塞式接收包裹receive(DatagramPacket p)
            server.receive(packet); //阻塞式
            //4.分析数据
            //byte[] getByte()
            //getLength()
            byte[] bytes = packet.getData();
            int l = bytes.length;
            String datas = new String(bytes, 0, l).trim();
            System.out.println(datas);

            //跳出循环
            if (datas.equals("bye")) {
                //5.释放资源
                server.close();
                break;
            }

            //5.释放资源
            server.close();
        }

    }
}
